{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import os"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "(1461, 6)\n",
      "Index(['date', 'precipitation', 'temp_max', 'temp_min', 'wind', 'weather'], dtype='object')\n",
      "date              object\n",
      "precipitation    float64\n",
      "temp_max         float64\n",
      "temp_min         float64\n",
      "wind             float64\n",
      "weather           object\n",
      "dtype: object\n",
      "****************************************************************************************************\n",
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 1461 entries, 0 to 1460\n",
      "Data columns (total 6 columns):\n",
      " #   Column         Non-Null Count  Dtype  \n",
      "---  ------         --------------  -----  \n",
      " 0   date           1461 non-null   object \n",
      " 1   precipitation  1461 non-null   float64\n",
      " 2   temp_max       1461 non-null   float64\n",
      " 3   temp_min       1461 non-null   float64\n",
      " 4   wind           1461 non-null   float64\n",
      " 5   weather        1461 non-null   object \n",
      "dtypes: float64(4), object(2)\n",
      "memory usage: 68.6+ KB\n"
     ]
    }
   ],
   "source": [
    "df = pd.read_csv(\"data/weather.csv\")\n",
    "print(type(df))# 查看df类型\n",
    "print(df.shape)# 查看df形状\n",
    "print(df.columns)# 查看df的列名\n",
    "print(df.dtypes)# 查看df各列数据类型\n",
    "print('*'*100)\n",
    "df.info()# 查看df基本信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "         date  precipitation  temp_max  temp_min  wind  weather\n",
      "0  2012-01-01            0.0      12.8       5.0   4.7  drizzle\n",
      "1  2012-01-02           10.9      10.6       2.8   4.5     rain\n",
      "2  2012-01-03            0.8      11.7       7.2   2.3     rain\n",
      "3  2012-01-04           20.3      12.2       5.6   4.7     rain\n",
      "4  2012-01-05            1.3       8.9       2.8   6.1     rain\n",
      "****************************************************************************************************\n",
      "            date  precipitation  temp_max  temp_min  wind weather\n",
      "1451  2015-12-22            4.6       7.8       2.8   5.0    rain\n",
      "1452  2015-12-23            6.1       5.0       2.8   7.6    rain\n",
      "1453  2015-12-24            2.5       5.6       2.2   4.3    rain\n",
      "1454  2015-12-25            5.8       5.0       2.2   1.5    rain\n",
      "1455  2015-12-26            0.0       4.4       0.0   2.5     sun\n",
      "1456  2015-12-27            8.6       4.4       1.7   2.9    rain\n",
      "1457  2015-12-28            1.5       5.0       1.7   1.3    rain\n",
      "1458  2015-12-29            0.0       7.2       0.6   2.6     fog\n",
      "1459  2015-12-30            0.0       5.6      -1.0   3.4     sun\n",
      "1460  2015-12-31            0.0       5.6      -2.1   3.5     sun\n"
     ]
    }
   ],
   "source": [
    "print(df.head())\n",
    "print('*'*100)\n",
    "print(df.tail(10))\n",
    "\n",
    "df_date_series = df[\"date\"]# 返回的是Series\n",
    "df_date_dataframe = df[[\"date\"]]# 返回的是DataFrame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>precipitation</th>\n",
       "      <th>temp_max</th>\n",
       "      <th>temp_min</th>\n",
       "      <th>wind</th>\n",
       "      <th>weather</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2012-01-02</td>\n",
       "      <td>10.9</td>\n",
       "      <td>10.6</td>\n",
       "      <td>2.8</td>\n",
       "      <td>4.5</td>\n",
       "      <td>rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>2012-01-11</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6.1</td>\n",
       "      <td>-1.1</td>\n",
       "      <td>5.1</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>100</th>\n",
       "      <td>2012-04-10</td>\n",
       "      <td>0.0</td>\n",
       "      <td>17.8</td>\n",
       "      <td>8.9</td>\n",
       "      <td>3.2</td>\n",
       "      <td>rain</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           date  precipitation  temp_max  temp_min  wind weather\n",
       "1    2012-01-02           10.9      10.6       2.8   4.5    rain\n",
       "10   2012-01-11            0.0       6.1      -1.1   5.1     sun\n",
       "100  2012-04-10            0.0      17.8       8.9   3.2    rain"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.loc[1]# 获取行标签为1的数据\n",
    "df.loc[[1, 10, 100]]# 获取行标签分别为1、10、100的数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "            date  precipitation  temp_max  temp_min  wind  weather    month\n",
      "0     2012-01-01            0.0      12.8       5.0   4.7  drizzle  2012-01\n",
      "1     2012-01-02           10.9      10.6       2.8   4.5     rain  2012-01\n",
      "2     2012-01-03            0.8      11.7       7.2   2.3     rain  2012-01\n",
      "3     2012-01-04           20.3      12.2       5.6   4.7     rain  2012-01\n",
      "4     2012-01-05            1.3       8.9       2.8   6.1     rain  2012-01\n",
      "...          ...            ...       ...       ...   ...      ...      ...\n",
      "1456  2015-12-27            8.6       4.4       1.7   2.9     rain  2015-12\n",
      "1457  2015-12-28            1.5       5.0       1.7   1.3     rain  2015-12\n",
      "1458  2015-12-29            0.0       7.2       0.6   2.6      fog  2015-12\n",
      "1459  2015-12-30            0.0       5.6      -1.0   3.4      sun  2015-12\n",
      "1460  2015-12-31            0.0       5.6      -2.1   3.5      sun  2015-12\n",
      "\n",
      "[1461 rows x 7 columns]\n",
      "          temp_max   temp_min\n",
      "month                        \n",
      "2012-01   7.054839   1.541935\n",
      "2012-02   9.275862   3.203448\n",
      "2012-03   9.554839   2.838710\n",
      "2012-04  14.873333   5.993333\n",
      "2012-05  17.661290   8.190323\n",
      "2012-06  18.693333  10.480000\n",
      "2012-07  22.906452  12.932258\n",
      "2012-08  25.858065  14.009677\n",
      "2012-09  22.880000  11.243333\n",
      "2012-10  15.829032   8.380645\n",
      "2012-11  11.326667   5.226667\n",
      "2012-12   7.235484   3.293548\n",
      "2013-01   6.106452   0.796774\n",
      "2013-02   9.467857   4.325000\n",
      "2013-03  12.709677   4.977419\n",
      "2013-04  14.243333   6.696667\n",
      "2013-05  19.625806   9.922581\n",
      "2013-06  23.253333  13.163333\n",
      "2013-07  26.093548  13.932258\n",
      "2013-08  26.119355  15.480645\n",
      "2013-09  21.360000  13.590000\n",
      "2013-10  14.229032   7.638710\n",
      "2013-11  12.053333   5.590000\n",
      "2013-12   7.022581   1.570968\n",
      "2014-01   9.600000   4.096774\n",
      "2014-02   8.200000   2.635714\n",
      "2014-03  12.906452   5.425806\n",
      "2014-04  15.460000   6.730000\n",
      "2014-05  19.870968  10.216129\n",
      "2014-06  21.590000  11.756667\n",
      "2014-07  26.900000  14.425806\n",
      "2014-08  26.383871  14.893548\n",
      "2014-09  23.163333  13.233333\n",
      "2014-10  17.961290  10.883871\n",
      "2014-11  11.030000   4.510000\n",
      "2014-12  10.138710   4.609677\n",
      "2015-01  10.154839   4.351613\n",
      "2015-02  12.517857   6.085714\n",
      "2015-03  14.377419   6.193548\n",
      "2015-04  15.503333   6.030000\n",
      "2015-05  20.025806  10.129032\n",
      "2015-06  26.063333  13.576667\n",
      "2015-07  28.093548  15.500000\n",
      "2015-08  26.087097  14.693548\n",
      "2015-09  20.293333  11.366667\n",
      "2015-10  17.538710  10.500000\n",
      "2015-11   9.683333   3.480000\n",
      "2015-12   8.380645   3.825806\n",
      "****************************************************************************************************\n",
      "month\n",
      "2012-01    4\n",
      "2012-02    4\n",
      "2012-03    4\n",
      "2012-04    4\n",
      "2012-05    3\n",
      "2012-06    3\n",
      "2012-07    4\n",
      "2012-08    3\n",
      "2012-09    4\n",
      "2012-10    3\n",
      "2012-11    4\n",
      "2012-12    4\n",
      "2013-01    4\n",
      "2013-02    3\n",
      "2013-03    5\n",
      "2013-04    4\n",
      "2013-05    3\n",
      "2013-06    2\n",
      "2013-07    2\n",
      "2013-08    3\n",
      "2013-09    3\n",
      "2013-10    3\n",
      "2013-11    4\n",
      "2013-12    3\n",
      "2014-01    3\n",
      "2014-02    3\n",
      "2014-03    3\n",
      "2014-04    2\n",
      "2014-05    2\n",
      "2014-06    2\n",
      "2014-07    3\n",
      "2014-08    3\n",
      "2014-09    3\n",
      "2014-10    3\n",
      "2014-11    4\n",
      "2014-12    3\n",
      "2015-01    3\n",
      "2015-02    3\n",
      "2015-03    3\n",
      "2015-04    3\n",
      "2015-05    3\n",
      "2015-06    4\n",
      "2015-07    4\n",
      "2015-08    4\n",
      "2015-09    3\n",
      "2015-10    4\n",
      "2015-11    3\n",
      "2015-12    3\n",
      "Name: weather, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "df[\"month\"] = pd.to_datetime(df[\"date\"]).dt.to_period(\"M\").astype(str)# 将date转换为 年-月 的格式\n",
    "print(df)\n",
    "\n",
    "df_groupby_date = df.groupby(\"month\")# 按month分组，返回一个分组对象(DataFrameGroupBy)\n",
    "month_temp = df_groupby_date[[\"temp_max\", \"temp_min\"]]# 从分组对象中选择特定的列\n",
    "month_temp_mean = month_temp.mean()# 对每个列求平均值\n",
    "\n",
    "# 以上代码可以写在一起\n",
    "month_temp_mean = df.groupby(\"month\")[[\"temp_max\", \"temp_min\"]].mean()\n",
    "print(month_temp_mean)\n",
    "\n",
    "print('*'*100)\n",
    "res=df.groupby(\"month\")[\"weather\"].nunique()\n",
    "print(res)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: xlabel='month'>"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#其中\"month\" 作为 x 轴，\"temp_max\" 和 \"temp_min\" 的均值作为 y 轴\n",
    "df.groupby(\"month\")[[\"temp_max\",\"temp_min\"]].mean().plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "       precipitation     temp_max     temp_min         wind\n",
      "count    1461.000000  1461.000000  1461.000000  1461.000000\n",
      "mean        3.029432    16.439083     8.234771     3.241136\n",
      "std         6.680194     7.349758     5.023004     1.437825\n",
      "min         0.000000    -1.600000    -7.100000     0.400000\n",
      "25%         0.000000    10.600000     4.400000     2.200000\n",
      "50%         0.000000    15.600000     8.300000     3.000000\n",
      "75%         2.800000    22.200000    12.200000     4.000000\n",
      "max        55.900000    35.600000    18.300000     9.500000\n",
      "****************************************************************************************************\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>25%</th>\n",
       "      <th>50%</th>\n",
       "      <th>75%</th>\n",
       "      <th>max</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>precipitation</th>\n",
       "      <td>1461.0</td>\n",
       "      <td>3.029432</td>\n",
       "      <td>6.680194</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.8</td>\n",
       "      <td>55.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>temp_max</th>\n",
       "      <td>1461.0</td>\n",
       "      <td>16.439083</td>\n",
       "      <td>7.349758</td>\n",
       "      <td>-1.6</td>\n",
       "      <td>10.6</td>\n",
       "      <td>15.6</td>\n",
       "      <td>22.2</td>\n",
       "      <td>35.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>temp_min</th>\n",
       "      <td>1461.0</td>\n",
       "      <td>8.234771</td>\n",
       "      <td>5.023004</td>\n",
       "      <td>-7.1</td>\n",
       "      <td>4.4</td>\n",
       "      <td>8.3</td>\n",
       "      <td>12.2</td>\n",
       "      <td>18.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>wind</th>\n",
       "      <td>1461.0</td>\n",
       "      <td>3.241136</td>\n",
       "      <td>1.437825</td>\n",
       "      <td>0.4</td>\n",
       "      <td>2.2</td>\n",
       "      <td>3.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>9.5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                count       mean       std  min   25%   50%   75%   max\n",
       "precipitation  1461.0   3.029432  6.680194  0.0   0.0   0.0   2.8  55.9\n",
       "temp_max       1461.0  16.439083  7.349758 -1.6  10.6  15.6  22.2  35.6\n",
       "temp_min       1461.0   8.234771  5.023004 -7.1   4.4   8.3  12.2  18.3\n",
       "wind           1461.0   3.241136  1.437825  0.4   2.2   3.0   4.0   9.5"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(df.describe())# 查看常用统计信息\n",
    "print('*'*100)\n",
    "df.describe().T# 行列转置"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>precipitation</th>\n",
       "      <th>temp_max</th>\n",
       "      <th>temp_min</th>\n",
       "      <th>wind</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>1461.000000</td>\n",
       "      <td>1461.000000</td>\n",
       "      <td>1461.000000</td>\n",
       "      <td>1461.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>3.029432</td>\n",
       "      <td>16.439083</td>\n",
       "      <td>8.234771</td>\n",
       "      <td>3.241136</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>6.680194</td>\n",
       "      <td>7.349758</td>\n",
       "      <td>5.023004</td>\n",
       "      <td>1.437825</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>-1.600000</td>\n",
       "      <td>-7.100000</td>\n",
       "      <td>0.400000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>10.600000</td>\n",
       "      <td>4.400000</td>\n",
       "      <td>2.200000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>15.600000</td>\n",
       "      <td>8.300000</td>\n",
       "      <td>3.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>2.800000</td>\n",
       "      <td>22.200000</td>\n",
       "      <td>12.200000</td>\n",
       "      <td>4.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>55.900000</td>\n",
       "      <td>35.600000</td>\n",
       "      <td>18.300000</td>\n",
       "      <td>9.500000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       precipitation     temp_max     temp_min         wind\n",
       "count    1461.000000  1461.000000  1461.000000  1461.000000\n",
       "mean        3.029432    16.439083     8.234771     3.241136\n",
       "std         6.680194     7.349758     5.023004     1.437825\n",
       "min         0.000000    -1.600000    -7.100000     0.400000\n",
       "25%         0.000000    10.600000     4.400000     2.200000\n",
       "50%         0.000000    15.600000     8.300000     3.000000\n",
       "75%         2.800000    22.200000    12.200000     4.000000\n",
       "max        55.900000    35.600000    18.300000     9.500000"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.describe(include=\"all\")# 统计所有列\n",
    "df.describe(include=[\"float64\"])# 只统计数据类型为float64的列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>precipitation</th>\n",
       "      <th>temp_max</th>\n",
       "      <th>temp_min</th>\n",
       "      <th>wind</th>\n",
       "      <th>weather</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>953</th>\n",
       "      <td>2014-08-11</td>\n",
       "      <td>0.5</td>\n",
       "      <td>35.6</td>\n",
       "      <td>17.8</td>\n",
       "      <td>2.6</td>\n",
       "      <td>rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1295</th>\n",
       "      <td>2015-07-19</td>\n",
       "      <td>0.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>17.2</td>\n",
       "      <td>3.3</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>228</th>\n",
       "      <td>2012-08-16</td>\n",
       "      <td>0.0</td>\n",
       "      <td>34.4</td>\n",
       "      <td>18.3</td>\n",
       "      <td>2.8</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>912</th>\n",
       "      <td>2014-07-01</td>\n",
       "      <td>0.0</td>\n",
       "      <td>34.4</td>\n",
       "      <td>15.6</td>\n",
       "      <td>3.5</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1306</th>\n",
       "      <td>2015-07-30</td>\n",
       "      <td>0.0</td>\n",
       "      <td>34.4</td>\n",
       "      <td>17.2</td>\n",
       "      <td>3.5</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1307</th>\n",
       "      <td>2015-07-31</td>\n",
       "      <td>0.0</td>\n",
       "      <td>34.4</td>\n",
       "      <td>17.8</td>\n",
       "      <td>2.6</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>216</th>\n",
       "      <td>2012-08-04</td>\n",
       "      <td>0.0</td>\n",
       "      <td>33.9</td>\n",
       "      <td>16.7</td>\n",
       "      <td>3.7</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>217</th>\n",
       "      <td>2012-08-05</td>\n",
       "      <td>0.0</td>\n",
       "      <td>33.9</td>\n",
       "      <td>17.8</td>\n",
       "      <td>1.9</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>546</th>\n",
       "      <td>2013-06-30</td>\n",
       "      <td>0.0</td>\n",
       "      <td>33.9</td>\n",
       "      <td>17.2</td>\n",
       "      <td>2.5</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>619</th>\n",
       "      <td>2013-09-11</td>\n",
       "      <td>0.0</td>\n",
       "      <td>33.9</td>\n",
       "      <td>16.1</td>\n",
       "      <td>2.4</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1278</th>\n",
       "      <td>2015-07-02</td>\n",
       "      <td>0.0</td>\n",
       "      <td>33.9</td>\n",
       "      <td>17.8</td>\n",
       "      <td>3.4</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1273</th>\n",
       "      <td>2015-06-27</td>\n",
       "      <td>0.0</td>\n",
       "      <td>33.3</td>\n",
       "      <td>17.2</td>\n",
       "      <td>3.9</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1279</th>\n",
       "      <td>2015-07-03</td>\n",
       "      <td>0.0</td>\n",
       "      <td>33.3</td>\n",
       "      <td>17.8</td>\n",
       "      <td>2.6</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1280</th>\n",
       "      <td>2015-07-04</td>\n",
       "      <td>0.0</td>\n",
       "      <td>33.3</td>\n",
       "      <td>15.0</td>\n",
       "      <td>2.9</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1294</th>\n",
       "      <td>2015-07-18</td>\n",
       "      <td>0.0</td>\n",
       "      <td>33.3</td>\n",
       "      <td>17.8</td>\n",
       "      <td>3.4</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1308</th>\n",
       "      <td>2015-08-01</td>\n",
       "      <td>0.0</td>\n",
       "      <td>33.3</td>\n",
       "      <td>15.6</td>\n",
       "      <td>3.1</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>229</th>\n",
       "      <td>2012-08-17</td>\n",
       "      <td>0.0</td>\n",
       "      <td>32.8</td>\n",
       "      <td>16.1</td>\n",
       "      <td>1.8</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>946</th>\n",
       "      <td>2014-08-04</td>\n",
       "      <td>0.0</td>\n",
       "      <td>32.8</td>\n",
       "      <td>16.1</td>\n",
       "      <td>2.6</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1281</th>\n",
       "      <td>2015-07-05</td>\n",
       "      <td>0.0</td>\n",
       "      <td>32.8</td>\n",
       "      <td>16.7</td>\n",
       "      <td>2.1</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>250</th>\n",
       "      <td>2012-09-07</td>\n",
       "      <td>0.0</td>\n",
       "      <td>32.2</td>\n",
       "      <td>13.3</td>\n",
       "      <td>3.1</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>923</th>\n",
       "      <td>2014-07-12</td>\n",
       "      <td>0.0</td>\n",
       "      <td>32.2</td>\n",
       "      <td>16.7</td>\n",
       "      <td>2.2</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>979</th>\n",
       "      <td>2014-09-06</td>\n",
       "      <td>0.0</td>\n",
       "      <td>32.2</td>\n",
       "      <td>15.0</td>\n",
       "      <td>2.9</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1277</th>\n",
       "      <td>2015-07-01</td>\n",
       "      <td>0.0</td>\n",
       "      <td>32.2</td>\n",
       "      <td>17.2</td>\n",
       "      <td>4.3</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1305</th>\n",
       "      <td>2015-07-29</td>\n",
       "      <td>0.0</td>\n",
       "      <td>32.2</td>\n",
       "      <td>14.4</td>\n",
       "      <td>3.8</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>547</th>\n",
       "      <td>2013-07-01</td>\n",
       "      <td>0.0</td>\n",
       "      <td>31.7</td>\n",
       "      <td>18.3</td>\n",
       "      <td>2.3</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>945</th>\n",
       "      <td>2014-08-03</td>\n",
       "      <td>0.0</td>\n",
       "      <td>31.7</td>\n",
       "      <td>14.4</td>\n",
       "      <td>2.6</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1272</th>\n",
       "      <td>2015-06-26</td>\n",
       "      <td>0.0</td>\n",
       "      <td>31.7</td>\n",
       "      <td>17.8</td>\n",
       "      <td>4.7</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1326</th>\n",
       "      <td>2015-08-19</td>\n",
       "      <td>0.0</td>\n",
       "      <td>31.7</td>\n",
       "      <td>16.1</td>\n",
       "      <td>2.1</td>\n",
       "      <td>drizzle</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>227</th>\n",
       "      <td>2012-08-15</td>\n",
       "      <td>0.0</td>\n",
       "      <td>31.1</td>\n",
       "      <td>16.7</td>\n",
       "      <td>4.7</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>562</th>\n",
       "      <td>2013-07-16</td>\n",
       "      <td>0.0</td>\n",
       "      <td>31.1</td>\n",
       "      <td>18.3</td>\n",
       "      <td>4.1</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            date  precipitation  temp_max  temp_min  wind  weather\n",
       "953   2014-08-11            0.5      35.6      17.8   2.6     rain\n",
       "1295  2015-07-19            0.0      35.0      17.2   3.3      sun\n",
       "228   2012-08-16            0.0      34.4      18.3   2.8      sun\n",
       "912   2014-07-01            0.0      34.4      15.6   3.5      sun\n",
       "1306  2015-07-30            0.0      34.4      17.2   3.5      sun\n",
       "1307  2015-07-31            0.0      34.4      17.8   2.6      sun\n",
       "216   2012-08-04            0.0      33.9      16.7   3.7      sun\n",
       "217   2012-08-05            0.0      33.9      17.8   1.9      sun\n",
       "546   2013-06-30            0.0      33.9      17.2   2.5      sun\n",
       "619   2013-09-11            0.0      33.9      16.1   2.4      sun\n",
       "1278  2015-07-02            0.0      33.9      17.8   3.4      sun\n",
       "1273  2015-06-27            0.0      33.3      17.2   3.9      sun\n",
       "1279  2015-07-03            0.0      33.3      17.8   2.6      sun\n",
       "1280  2015-07-04            0.0      33.3      15.0   2.9      sun\n",
       "1294  2015-07-18            0.0      33.3      17.8   3.4      sun\n",
       "1308  2015-08-01            0.0      33.3      15.6   3.1      sun\n",
       "229   2012-08-17            0.0      32.8      16.1   1.8      sun\n",
       "946   2014-08-04            0.0      32.8      16.1   2.6      sun\n",
       "1281  2015-07-05            0.0      32.8      16.7   2.1      sun\n",
       "250   2012-09-07            0.0      32.2      13.3   3.1      sun\n",
       "923   2014-07-12            0.0      32.2      16.7   2.2      sun\n",
       "979   2014-09-06            0.0      32.2      15.0   2.9      sun\n",
       "1277  2015-07-01            0.0      32.2      17.2   4.3      sun\n",
       "1305  2015-07-29            0.0      32.2      14.4   3.8      sun\n",
       "547   2013-07-01            0.0      31.7      18.3   2.3      sun\n",
       "945   2014-08-03            0.0      31.7      14.4   2.6      sun\n",
       "1272  2015-06-26            0.0      31.7      17.8   4.7      sun\n",
       "1326  2015-08-19            0.0      31.7      16.1   2.1  drizzle\n",
       "227   2012-08-15            0.0      31.1      16.7   4.7      sun\n",
       "562   2013-07-16            0.0      31.1      18.3   4.1      sun"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# （1）找到最高温度最大的30天\n",
    "df = pd.read_csv(\"data/weather.csv\")\n",
    "df.nlargest(30, \"temp_max\") "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>precipitation</th>\n",
       "      <th>temp_max</th>\n",
       "      <th>temp_min</th>\n",
       "      <th>wind</th>\n",
       "      <th>weather</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>250</th>\n",
       "      <td>2012-09-07</td>\n",
       "      <td>0.0</td>\n",
       "      <td>32.2</td>\n",
       "      <td>13.3</td>\n",
       "      <td>3.1</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1305</th>\n",
       "      <td>2015-07-29</td>\n",
       "      <td>0.0</td>\n",
       "      <td>32.2</td>\n",
       "      <td>14.4</td>\n",
       "      <td>3.8</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>945</th>\n",
       "      <td>2014-08-03</td>\n",
       "      <td>0.0</td>\n",
       "      <td>31.7</td>\n",
       "      <td>14.4</td>\n",
       "      <td>2.6</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1280</th>\n",
       "      <td>2015-07-04</td>\n",
       "      <td>0.0</td>\n",
       "      <td>33.3</td>\n",
       "      <td>15.0</td>\n",
       "      <td>2.9</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>979</th>\n",
       "      <td>2014-09-06</td>\n",
       "      <td>0.0</td>\n",
       "      <td>32.2</td>\n",
       "      <td>15.0</td>\n",
       "      <td>2.9</td>\n",
       "      <td>sun</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            date  precipitation  temp_max  temp_min  wind weather\n",
       "250   2012-09-07            0.0      32.2      13.3   3.1     sun\n",
       "1305  2015-07-29            0.0      32.2      14.4   3.8     sun\n",
       "945   2014-08-03            0.0      31.7      14.4   2.6     sun\n",
       "1280  2015-07-04            0.0      33.3      15.0   2.9     sun\n",
       "979   2014-09-06            0.0      32.2      15.0   2.9     sun"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.nlargest(30, \"temp_max\").nsmallest(5, \"temp_min\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>date</th>\n",
       "      <th>precipitation</th>\n",
       "      <th>temp_max</th>\n",
       "      <th>temp_min</th>\n",
       "      <th>wind</th>\n",
       "      <th>weather</th>\n",
       "      <th>year</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>228</th>\n",
       "      <td>2012-08-16</td>\n",
       "      <td>0.0</td>\n",
       "      <td>34.4</td>\n",
       "      <td>18.3</td>\n",
       "      <td>2.8</td>\n",
       "      <td>sun</td>\n",
       "      <td>2012</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>546</th>\n",
       "      <td>2013-06-30</td>\n",
       "      <td>0.0</td>\n",
       "      <td>33.9</td>\n",
       "      <td>17.2</td>\n",
       "      <td>2.5</td>\n",
       "      <td>sun</td>\n",
       "      <td>2013</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>953</th>\n",
       "      <td>2014-08-11</td>\n",
       "      <td>0.5</td>\n",
       "      <td>35.6</td>\n",
       "      <td>17.8</td>\n",
       "      <td>2.6</td>\n",
       "      <td>rain</td>\n",
       "      <td>2014</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1295</th>\n",
       "      <td>2015-07-19</td>\n",
       "      <td>0.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>17.2</td>\n",
       "      <td>3.3</td>\n",
       "      <td>sun</td>\n",
       "      <td>2015</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            date  precipitation  temp_max  temp_min  wind weather  year\n",
       "228   2012-08-16            0.0      34.4      18.3   2.8     sun  2012\n",
       "546   2013-06-30            0.0      33.9      17.2   2.5     sun  2013\n",
       "953   2014-08-11            0.5      35.6      17.8   2.6    rain  2014\n",
       "1295  2015-07-19            0.0      35.0      17.2   3.3     sun  2015"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[\"year\"] = pd.to_datetime(df[\"date\"]).dt.to_period(\"Y\").astype(str)# 将date转换为 年 格式\n",
    "df_sort = df.sort_values([\"year\", \"temp_max\"], ascending=[True, False])# 按year升序，temp_max降序排序\n",
    "df_sort.drop_duplicates(subset=\"year\")# 按year去重"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
